'''
官网地址：https://www.biqukan.la/
选择一个类别，如玄幻小说

爬取目标：
玄幻小说类别下前五页的
小说链接
小说名称
小说作者
小说描述

https://www.biqukan.la/fenlei1/1.html
https://www.biqukan.la/fenlei1/2.html
'''
import requests
import re
import time
import random

class Biqukan:
    def __init__(self):
        '''初始化方法'''
        self.url = "https://www.biqukan.la/fenlei1/{}.html"
        self.headers ={
            "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"
        }

    def get_html(self,url):
        html = requests.get(url=url,headers = self.headers).text
        print(html)
        #直接调用解析页面的函数
        self.parse_html(html)

    def parse_html(self,html):
        regex = """<div class="caption"><h4><a href="(.*?)" title="(.*?)">.*?<small class="text-muted fs-12">(.*?)</small><p class="text-muted fs-12 hidden-xs">(.*?)</p></div>"""
       # [（(链接)，（名称），（作者），（简述）），（小说2），（小说3）]
        r_list = re.findall(regex,html,re.S)
        self.save_html(r_list)#直接调用保存数据的函数

    def save_html(self,r_list):
        for r in r_list:
            #r:(小说1的爬取内容)
            item = {} #字典
            # strip():取出字符串首尾的空格
            item['href']=r[0].strip()
            item['title']=r[1].strip()
            item['author']=r[2].strip()
            item['comment'] = r[3].strip()
            print(item)

    def run(self):
        for page in range(1,6):
            page_url = self.url.format(page)
            self.get_html(url=page_url)
            time.sleep(random.randint(1,3))

if __name__ == '__main__':
    test = Biqukan()
    test.run()